草庐IT

TypeScript 运算符

全部标签

c++ - 列表中 -> 运算符的语义(以及一般的 C++)

我目前的任务是编写一个带有迭代器的列表。与创建迭代器类一样,列表不是问题。从几个来源,我看到我有两个运算符要在我的迭代器类中定义:operator*和operator->。到目前为止太棒了!假设我的迭代器结构是这样的//NestedclassofListclass_Iter{private:ListElem*pCurr;constList*pList;public:_Iter(ListElem*pCurr,constList*list):pCurr_(pCurr),pList(list){}T&operator*(){returnpCurr_->data;}T*operator->()

c++ - std::ostringstream 运算符重载搜索顺序?

我有以下类(class):namespace{classMimeLogger:publicstd::ostringstream{public:MimeLogger(){}~MimeLogger(){LOGEVENT(logModuleWSE,logEventDebug,logMsgWSETrace1,str());}};}当我这样做时:MimeLogger()第一个"Hello"字符串被视为void*.如果我调试代码,"Hello"传递到std::basic_ostream::operator并打印为指针值,而不是字符串。第二个字符串,"World"被正确地传递到全局重载charcon

c++ - 波浪号运算符分别返回 -1、-2 而不是 0、1

我对此有些疑惑。我认为C++中的~运算符应该以不同的方式工作(不是Matlab-y)。这是一个最小的工作示例:#includeusingnamespacestd;intmain(intargc,char**argv){boolbanana=true;boolpeach=false;cout这是我的输出:1-20-1我希望有人对此有所了解。 最佳答案 这正是应该发生的事情:当你反转零的二进制表示时,你得到负一;当您反转1的二进制表示时,您会得到二进制补码表示中的负2。00000000-->~-->11111111//Thisis-10

c++重载另一个类的赋值运算符

我有一个C++类来处理分数,我希望它允许转换为double,我有类似的东西:classfraction{doublen,d;public:fraction(double_n,double_d){n=_n;d=_d;}//somefunctionsdoubletodouble(){returnn/d;}};fractionfrac(1,2);doubledbl=frac.todouble();效果很好,但我想重载赋值运算符,这样我就可以直接使用:doubledbl=frac;我试着添加这个:doubledouble::operator=(double&dbl,fraction&frac)

c++ 删除 move 赋值运算符编译问题

以下代码在gcc4.8.0(mingw-w64)和-O2-std=c++11-frtti-fexceptions-mthreads中失败#includeclassParam{public:Param():data(newstd::string){}Param(conststd::string&other):data(newstd::string(other)){}Param(constParam&other):data(newstd::string(*other.data)){}Param&operator=(constParam&other){*data=*other.data;re

c++ - C++中的运算符重载

我最近发现了C++中的重载运算符。当你想在类中重载一个运算符,并且我们想用它创建新对象时,我们可以用我们定义的其他对象来创建新对象NameOfClassoperator+(constNameOfClass&b){{NameOfClasstmp;tmp.length=this->length+b.length;tmp.breadth=this->breadth+b.breadth;tmp.height=this->height+b.height;returntmp;}我不知道我是否在此之前定义了2个对象。例如NameOfClassone(length,breadth,height);Na

c++ - MSVS 2015 表达错误 C4146 - 应用于无符号类型的一元减号运算符

有没有办法在MicrosoftVisualStudio2015-ExpressEdition中禁用错误​​C4146?我尝试将“将警告视为错误”选项设置为否,但MSVC仍将C4146视为错误。有什么解决办法吗? 最佳答案 对于新的MicrosoftVisualStudioCommunityEdition项目,“SDL检查”默认设置为“是(/sdl)”。这会将某些“安全相关”警告变成错误。将参数设置为“No(/sdl-)”,将它们转回警告。请参阅有关“SDLCheck”的Microsoft文档,当前为here.编辑:这个问题已经在评论

c++ - STL 分配器和运算符 new[]

是否有使用operatornew[]的STL实现?作为分配器?在我的编译器上,生成Foo::operatornew[]private并没有阻止我创建vector...这种行为有任何保证吗? 最佳答案 C++标准,第20.4.1.1节。默认分配器allocate()函数使用全局运算符new:pointerallocate(size_typen,allocator::const_pointerhint=0);3Notes:Uses::operatornew(size_t)(18.4.1).

c++ - 将 setw 与用户定义的 ostream 运算符一起使用

如何让setw或类似的东西(boost格式?)与我的用户定义的ostream运算符一起工作?setw仅适用于推送到流的下一个元素。例如:cout其中myX是X类型,我有自己的ostream&operator 最佳答案 只需确保所有输出都作为对operator的同一调用的一部分发送到流中.实现此目的的一种直接方法是使用辅助ostringstream对象:#includeostream&operator 关于c++-将setw与用户定义的ostream运算符一起使用,我们在StackOver

c++ - 我什么时候应该定义自己的复制构造函数和赋值运算符

我正在阅读第5项中的effectiveC++,它提到了两种情况,我必须自己定义复制赋值运算符。case是一个包含const和reference成员的类。我写信是想问我必须定义自己的复制构造函数和赋值运算符的一般规则或情况是什么?我还想知道什么时候必须定义自己的构造函数和析构函数。非常感谢! 最佳答案 在以下情况下,您必须创建自己的复制构造函数和赋值运算符(通常还有默认构造函数):您希望您的对象被复制或分配,或放入标准容器中,例如vector默认的复制构造函数和赋值运算符不会做正确的事。考虑以下代码:classA;//definede